<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        function Person(name, age) {
          this.name = name;
          this.age = age;
    
          return 1
        }
        Person.prototype.do = function () {
          console.log("学习 react")
        }
    
    
    
        //手写new的函数
        function myNew(constr, ...arg) {
          //1.创建一个对象
          const obj = {};
    
          //2.调用构造函数把构造函数的this指向我们创建的对象
          const re = constr.apply(obj, arg)
    
          //3.把obj的隐式原型指向构造函数的原型对象
          obj.__proto__ = constr.prototype;
    
          //4.返回值(判断构造函数的返回值是基本类型还是引用类型)
          if (typeof re === 'object' && re !== null || typeof re === "function") {
            return re;
          } else {
            return obj
          }
        }
    
        const p1 = myNew(Person, "laowang", 18)
        console.log(p1, "p1");
      </script>
</body>
</html>